package com.herui.iot.data.check.source;

import com.herui.sdyu_lib.http.callback.Callback;
import com.herui.sport_care.data.check.AgreementResponse;
import com.herui.sport_care.data.check.BetaDataFileUploadRequest;
import com.herui.sport_care.data.check.BetaDataUploadForm;
import com.herui.sport_care.data.check.DeviceInfo;
import com.herui.sport_care.data.check.EquipmentType;
import com.herui.sport_care.data.check.EvalUserInfo;
import com.herui.sport_care.data.check.SecurityToken;
import com.herui.sport_care.data.eval.AgreementInfo;
import com.herui.sport_care.data.eval.BetaSchemeInfo;
import com.herui.sport_care.data.eval.EvalDetail;
import com.herui.sport_care.data.eval.EvalHostoryInfo;
import com.herui.sport_care.data.eval.EvalInfo;
import com.herui.sport_care.data.eval.OrganTreeInfo;
import com.herui.sport_care.data.eval.TestUserInfo;

import java.util.List;
import java.util.Map;

import retrofit2.http.Body;

/**
 * Created by amanda.shan on 2021/9/30.
 */
public interface CheckSource {

    void getOssToken(Callback.CommonCallback<SecurityToken> callback);

    /**
     * 查询等待被测试者列表
     * @param evaluationSchemeId    评估方案Id
     * @param type                  评估进程type: 0 代表静息测量 ， 1 代表执行测试方案
     * @param appraiserId           当前评估人ID
     * @param callback
     */
    void findAwaitItemList(Long evaluationSchemeId, int type, long appraiserId,
                           Callback.CommonCallback<List<EvalUserInfo>> callback);

    /**
     * 获取可用这边
     * @param evaluationSchemeId    评估方案id
     * @param organId           组织id
     * @param userId            受评者用户id
     * @param equipmentType     设备类型
     */
    void getAvailableEquipmentList(Long evaluationSchemeId, long organId, long userId,
                                   EquipmentType equipmentType,
                           Callback.CommonCallback<List<DeviceInfo>> callback);


    /**
     * 用户设备绑定
     * @param evaluationSchemeId    评估方案id
     * @param equipmentId           设备id
     * @param userId                受评者用户id
     * @param equipmentType         设备类型
     * @param callback
     */
    void equipmentUserSchemeBind(Long evaluationSchemeId, long equipmentId, long userId,
                                   EquipmentType equipmentType,
                                   Callback.CommonCallback<String> callback);

    /**
     * 用户设备解绑
     * @param evaluationSchemeId    评估方案id
     * @param equipmentId           设备id
     * @param userId                受评者用户id
     * @param callback
     */
    void equipmentUserSchemeUnBind(Long evaluationSchemeId, long equipmentId, long userId,
                                 Callback.CommonCallback<String> callback);


    /**
     * 数据上传
     * @param betaDataUploadForm
     * @param callback
     */
    void dataUpload(BetaDataUploadForm betaDataUploadForm,
                    Callback.CommonCallback<String> callback);


    /**
     * 获取协议详细信息
     * @param agreementId   协议id
     * @param callback
     */
    void getAgreement(Long agreementId, Callback.CommonCallback<AgreementResponse> callback);

    /**
     * 文件上传
     * @param betaDataFileUploadRequest
     * @param callback
     */
    void fileDataUpload(BetaDataFileUploadRequest betaDataFileUploadRequest,
                        Callback.CommonCallback<String> callback);

    /**
     *  自觉最大用力程度(疲劳程度)上传
     * @param betaDataId    评估数据id
     * @param rep           自觉最大用力描述
     * @param callback
     */
    void uploadRpe(Long betaDataId, String rep, Callback.CommonCallback<String> callback);
}

